로딩 중이에요... 🐣
2. 배포 설정2 | ✅ 저자: 이유정(박사)
RDS 시작하기 https://ap-northeast-2.console.aws.amazon.com/rds/home?region=ap-northeast-2
데이터베이스 생성
옵션엔진은 mySQL
프리터어로 선택합니다.
설정하기
VPC보안그룹 생성하기
데이터베이스
데이터베이스 생성하기 클릭
마스터암호를 잘 보관하기
Amaxon S3는 이미지, 파일 저장용
Amaxon S3 : 검색창에 S3검색 후 이동
버킷만들기 클릭
버킷 이름은 소문자로 사용해야 합니다 airest-dev로 만듭니다.
모든 퍼블릭 엑세스 차단을 체크 해제하고
모든 퍼블릭 엑세스 차단을 비활성화하면... 그부분은 체크 합니다.
버킷만들기 클릭
객체 소유권 편집하기
객체 소유권 편집
boto3
, django-storages
란 무엇인가?
패키지 | 역할 | 비고 |
---|---|---|
boto3 |
AWS 서비스를 Python 코드로 제어할 수 있게 해주는 AWS 공식 SDK | AWS S3, EC2, RDS 등 사용 가능 |
django-storages |
Django의 정적 파일/미디어 파일을 S3 등에 저장할 수 있게 해주는 Django용 확장 라이브러리 | boto3 를 내부적으로 사용함 |
django-storages 공식문서에서 자세한 내용을 확인할수 있습니다. https://django-storages.readthedocs.io/en/latest/
두 패키지를 함께 사용하면: Django에서 업로드된 이미지, 첨부파일 등을 AWS S3에 저장할 수 있게 됩니다.
가상환경이 활성화된 상태에서
pip install --break-system-packages boto3 django-storages
pip install -r requirements.txt
이 명령어로 추가하면 너무 많은 패키지까지 포함되므로 협업시 불필요할수 있으므로 아래 내용만 적용되게 직접 후처리 합니다.
Django==4.2.7
djangorestframework==3.16.0
mysqlclient==2.2.0
pillow==11.3.0
python-dotenv==1.1.1
boto3==1.39.9
django-storages==1.14.6
random string generator 검색하여 장고 비밀번호 생성
settings.py 설정하기 :
SECRET_KEY = 'mCeJY8henHKouQElHUfrYEgqVDvCwbNDbI5JVuv6n515OXJ9bbdneVOJQ8JNMbLh'
DEBUG = os.getenv("DEBUG", "False") == "True"
ALLOWED_HOSTS = os.getenv("ALLOWED_HOSTS", "localhost").split(",")
# HSTS 설정 (1년)
SECURE_HSTS_SECONDS = 31536000
SECURE_HSTS_INCLUDE_SUBDOMAINS = True
SECURE_HSTS_PRELOAD = True
# HTTPS 강제 리다이렉트
SECURE_SSL_REDIRECT = True
# 쿠키를 HTTPS 전용으로만
SESSION_COOKIE_SECURE = True
CSRF_COOKIE_SECURE = True
DATABASES = {
"default": {
"ENGINE": "django.db.backends.mysql",
"NAME": os.environ.get("DB_NAME", "restaurant_db"),
"USER": os.environ.get("DB_USER", "django_user"),
"PASSWORD": os.environ.get("DB_PASSWORD", "db_password"),
"HOST": os.environ.get("DB_HOST", "localhost"),
"PORT": os.environ.get("DB_PORT", "3306"),
"OPTIONS": {"charset": "utf8mb4"},
}
}
번호 | 경고 코드 | 설명 | 해결 방법 |
---|---|---|---|
1 | W004 |
SECURE_HSTS_SECONDS 미설정HTTPS 강제 유지 기간 설정이 없음. |
SECURE_HSTS_SECONDS = 31536000 (1년)+ SECURE_HSTS_INCLUDE_SUBDOMAINS = True + SECURE_HSTS_PRELOAD = True 권장 |
2 | W008 |
HTTPS 리다이렉션 설정 안됨SSL 아닌 접속도 허용 중. | SECURE_SSL_REDIRECT = True |
3 | W009 |
SECRET_KEY 보안 취약너무 짧거나 자동 생성값(django-insecure-xxx). |
.env 파일에 안전한 키 사용:SECRET_KEY=sl@3!t$9#x$... (50자 이상, 무작위) |
4 | W012 |
세션 쿠키가 보안 연결(HTTPS)에서만 전송되지 않음 | SESSION_COOKIE_SECURE = True |
5 | W016 |
CSRF 토큰도 보안 연결로만 전달되지 않음 | CSRF_COOKIE_SECURE = True |
6 | W018 |
DEBUG=True 상태로 배포 중 | .env 에 DEBUG=False 로 설정 |
.env
DB_NAME=restaurant_db
DB_USER=restaurant_user
DB_PASSWORD=DjangoUserPass!123
DB_HOST=airest-d.cfwgaqsu2fpk.ap-north..본인 주소
DB_PORT=3306
# SECRET_KEY=django-insecure-!pdm2(!5b9_oa......본인장고비밀번호키
DEBUG=True